package org.bb.my.arithmetic;

import java.util.Arrays;
import java.util.Scanner;

public class ArithmeticTools {
	Scanner input = new Scanner(System.in);

	int low;// 开始位
	int high;// 结束位
	int mind;// 中间值

	/**
	 * @Title: BinarySearch
	 * @Description: 二分查找 递归调用
	 * @param arr
	 *            传入数组
	 * @param find
	 *            查找的数
	 * @param low
	 *            开始位
	 * @param high
	 *            结束位
	 * @return
	 * @return int 返回类型
	 */
	public int binarySearch(int[] arr, int find, int low, int high) {
		// 计算中间值
		mind = (low + high) / 2;

		// 结束条件,没有找到
		if (low > high) {
			System.out.println("没有这个数!");
			return -1;
		}
		// 根据和中间位置比较的进行递归调用
		// 找到，结束
		if (find == arr[mind]) {
			return mind;
		}
		if (find > arr[mind]) {
			int lowNew = mind + 1;
			return binarySearch(arr, find, lowNew, high);
		} else {
			int highNew = mind - 1;
			return binarySearch(arr, find, low, highNew);
		}

	}

	/**
	 * @Title: toBinarySearch
	 * @Description: 对数组进行排序
	 * @param arr
	 * @param find
	 * @param low
	 * @param high
	 * @return void 返回类型
	 */
	public int toBinarySearch(int[] arr, int find, int low, int high) {
		int index = -1;// 默认查找的位置
		if (arr != null && arr.length > 0) {
			Arrays.sort(arr);// 对数据进行排序
			index = binarySearch(arr, find, 0, arr.length - 1);
		}
		return index;

	}

	/**
	 * @Title: initArr
	 * @Description: 初始化数组,输入数组，并输入要查找的数
	 * @return void 返回类型
	 */
	public int[] initArr() {

		System.out.println("请输入元素个数:");
		int num = input.nextInt();
		int[] arr = new int[num];
		for (int i = 0; i < num; i++) {
			System.out.println("请输入第" + i + "个元素");
			int val = input.nextInt();
			arr[i] = val;
		}
		pringArr(arr);// 输出数组
		return arr;

	}

	public int getfind() {
		System.out.println("请输入要查找一个整型的数：");
		int find = input.nextInt();
		return find;
	}

	/**
	 * @Title: pringArr
	 * @Description: 打印数组
	 * @param arr
	 * @return void 返回类型
	 */
	public void pringArr(int[] arr) {
		for (int i : arr) {
			System.out.print(i + " ");
		}
		System.out.println();

	}

}
